package array;

import com.sun.org.apache.xpath.internal.operations.Bool;

import java.util.Arrays;

/**
 * File Name: FindNumberIn2DArray
 * Date: 2020-04-25 16:26
 * Author: liangling
 * Description 在一个 n * m 的二维数组中，每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个
 * 函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数
 *
 * 现有矩阵 matrix 如下：
 *
 * [
 * [1,   4,  7, 11, 15],
 * [2,   5,  8, 12, 19],
 * [3,   6,  9, 16, 22],
 * [10, 13, 14, 17, 24],
 * [18, 21, 23, 26, 30]
 * ]
 * 给定 target = 5，返回 true。
 *
 * 给定 target = 20，返回 false。
 *
 *
 * 解题思路：
 * 遍历二维数组，取到每一个一维数组用Arrays工具类中的binarySearch方法查找当前数组是否存在要找的数字，
 * 以此判断二维数组中每个一维数组是否包含，找到符合结果值返回true,不存在就返回false
 */
public class FindNumberIn2DArray {
    public static void main(String[] args) {
        int[][] a = {{1, 4, 7, 11, 15}, {2, 5, 8, 12, 19}, {3, 6, 9, 16, 22}, {10, 13, 14, 17, 24}, {18, 21, 23, 26, 30}};
        int[][] b = {{-5}};

        System.out.println(findNumber(a,5));
        System.out.println(findNumber(b, -5));
    }

    private static Boolean findNumber(int[][] matrix, int target) {
        Boolean flag = false;
        for (int i = 0; i < matrix.length; i++) {
                int a =Arrays.binarySearch(matrix[i],target);//判断当前数组中是否包含要找的值
              if (a>=0){
                  return true;
              }else {
                continue;
              }
        }
        return flag;
    }
}
